#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//只有一个比特位是1，其他位都是0
//#define ONE (1<<0)
//#define TWO (1<<1)
//#define THREE (1<<2)
//#define FOUR (1<<3)
#define FILE_NAME "log.txt"
//void show(int flag)
//{
//    if(flag&ONE) printf("one");
//    if(flag&TWO) printf("TWO");
//    if(flag&THREE) printf("three");
//    if(flag&FOUR) printf("four");
//    printf("\n");
//}
int main()
{
    printf("stdin->fd:%d\n",stdin->_fileno);
    printf("stdout->fd:%d\n",stdout->_fileno);
    printf("stderr->fd:%d\n",stderr->_fileno);
    int fd=open(FILE_NAME,O_RDONLY | O_CREAT,0666);
    if(fd<0)
    {
        perror("open");
        return 1;
    }
    char buffer[100];
    ssize_t num=read(fd,buffer,sizeof(buffer)-1);//留一个位置放\0
    if(num>0)
    {
        buffer[num]='\0';//把\0补回去
    }
    printf("%s\n",buffer);
    //char outBuff[60];
    //int cnt=5;
    //while(cnt)
    //{
    //    sprintf(outBuff,"%s:%d\n","jly",cnt--);
    //    write(fd,outBuff,strlen(outBuff));//将字符写入文件不用让strlen+1写入\n，除非就像在文件中写入\n
    //}
    close(fd);
    //show(ONE|TWO);
    //show(ONE|TWO|THREE|FOUR);
    //FILE* fp=fopen(FILE_NAME,"w");//r(只读，出错)w(只写，新建)r+(读写，出错)w+(读写，新建)a(追加)a+(读写追加)
    //FILE* fp=fopen(FILE_NAME,"r");//r(只读，出错)w(只写，新建)r+(读写，出错)w+(读写，新建)a(追加)a+(读写追加)
    //if(fp==NULL)
    //{
    //    perror("fopen");
    //    return 1;
    //}
    //int cnt=5;
    //while(cnt--)
    //{
    //    fprintf(fp,"%d%s\n",1,"jly");//向文件中写入数据
    //}
   // char buffer[60];
   // while(fgets(buffer,sizeof(buffer),fp)!=NULL)//遇到\n或num-1或文件末尾为一轮读取。
   // {
   //     buffer[strlen(buffer)-1]='\0';//因为后面的puts会补个'\n',所以要先去除一个'\n'
   //     puts(buffer);//将str指向的C字符串写入标准输出(stdout)并附加换行符('\n')
   // }
   // fclose(fp);
    return 0;
}
